package com.huangyi.commoncore.enums;
import lombok.Getter;

/**
 * 拒绝策略枚举
 */
@Getter
public enum RejectType {

    /**
     * AbortPolicy策略 枚举值：1
     * 直接抛 RejectedExecutionException，提交者可以捕获到失败。
     */
    AbortPolicy(1),

    /**
     * CallerRunsPolicy策略 枚举值：2
     * 调用 execute() 的线程自己执行该任务（不丢弃也不抛异常），起到降速/背压作用。
     */
    CallerRunsPolicy(2),

    /**
     * DiscardOldestPolicy策略 枚举值：3
     * 丢弃队列中最旧的任务，然后尝试提交当前任务
     */
    DiscardOldestPolicy(3),

    /**
     * DiscardPolicy策略 枚举值：4
     * 丢弃新任务，静默丢弃
     */
    DiscardPolicy(4);

    private final Integer value;

    RejectType(Integer value) {
        this.value = value;
    }
}
